@echo off
REM 文档问答系统启动脚本
REM 此脚本将依次启动Ollama服务、后端Flask服务器和Streamlit Web控制台

REM 设置错误处理
setlocal EnableDelayedExpansion
set ERROR_COUNT=0

REM 启动Ollama服务
echo 正在启动Ollama服务...
start "Ollama Service" cmd /k "ollama serve"

REM 等待Ollama服务启动
 echo 等待Ollama服务启动...
timeout /t 5 /nobreak >nul

REM 检查Ollama服务是否启动成功
powershell -Command "if (Test-NetConnection -ComputerName localhost -Port 11434 -InformationLevel Quiet) { echo 'Ollama服务启动成功' } else { echo 'Ollama服务启动失败，请检查Ollama是否正确安装' && exit /b 1 }"
if %ERRORLEVEL% EQU 1 set /a ERROR_COUNT+=1

REM 启动后端Flask服务器（带错误日志）
echo 正在启动Flask服务器...
start "Flask Server" cmd /k "cd backend && set FLASK_APP=app.py && set FLASK_ENV=development && flask run 2> flask_error.log"

REM 等待Flask服务器启动
 echo 等待Flask服务器启动...
timeout /t 5 /nobreak >nul

REM 检查Flask服务器是否启动成功
powershell -Command "if (Test-NetConnection -ComputerName localhost -Port 5000 -InformationLevel Quiet) { echo 'Flask服务器启动成功' } else { echo 'Flask服务器启动失败，请查看flask_error.log获取详细信息' && exit /b 1 }"
if %ERRORLEVEL% EQU 1 set /a ERROR_COUNT+=1

REM 启动Streamlit Web控制台
echo 正在启动Streamlit控制台...
start "Streamlit Console" cmd /k "streamlit run web_console.py --server.headless=true"

REM 等待Streamlit控制台启动
 echo 等待Streamlit控制台启动...
timeout /t 5 /nobreak >nul

REM 检查Streamlit控制台是否启动成功
powershell -Command "if (Test-NetConnection -ComputerName localhost -Port 8501 -InformationLevel Quiet) { echo 'Streamlit控制台启动成功' } else { echo 'Streamlit控制台启动失败' && exit /b 1 }"
if %ERRORLEVEL% EQU 1 set /a ERROR_COUNT+=1

REM 启动文档上传页面服务器
echo 正在启动文档上传服务器...
start "Document Upload Server" cmd /k "cd frontend && python -m http.server 8000"

REM 等待文档上传服务器启动
 echo 等待文档上传服务器启动...
timeout /t 3 /nobreak >nul

REM 检查文档上传服务器是否启动成功
powershell -Command "if (Test-NetConnection -ComputerName localhost -Port 8000 -InformationLevel Quiet) { echo '文档上传服务器启动成功' } else { echo '文档上传服务器启动失败' && exit /b 1 }"
if %ERRORLEVEL% EQU 1 set /a ERROR_COUNT+=1

REM 显示启动结果
if %ERROR_COUNT% EQU 0 (
    echo 所有服务已成功启动！
    echo.
    echo 文档上传页面地址: http://localhost:8000
    echo 文档问答系统地址: http://localhost:8501
    echo.
    echo 提示：关闭此窗口不会停止服务，服务在各自的命令窗口中运行
    echo 如果需要停止服务，请关闭对应的命令窗口
) else (
    echo 有 %ERROR_COUNT% 个服务启动失败，请查看上面的错误信息
)

pause